package main

import "fmt"

func fibonacci2(c, quit chan int) {
	x, y := 0, 1
	for {
		select { //阻塞,等待可用队列
		case c <- x: //这里是c先可用 ,所以执行c的逻辑
			x, y = y, x+y
		case <-quit: //然后10次后quit接收消息 ,输出log并退出
			fmt.Println("quit")
			return
		}
	}
}

func main() {
	c := make(chan int)    // 创建一个channel
	quit := make(chan int) // 创建退出channel
	go func() {            //创建一个函数并且使用go 运行
		for i := 0; i < 10; i++ { //循环10次 每次取出c中的元素
			fmt.Println(<-c)
		}
		quit <- 0 // 发送退出给quit channel
	}()

	fibonacci2(c, quit)
}
